﻿Imports System.IO
Public Class GestionOferta
    Private _Ofertas As New List(Of Oferta)
    Public ReadOnly Property Ofertas As ObjectModel.ReadOnlyCollection(Of Oferta)
        Get
            Return _Ofertas.AsReadOnly
        End Get
    End Property
   
    Public Sub New()
        If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Ficheros") Then
            Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\Ficheros")
        End If
        Dim fich As StreamReader
        If File.Exists(My.Application.Info.DirectoryPath & "\Ficheros\" & "Ofertas.txt") Then
            Try
                fich = New StreamReader(My.Application.Info.DirectoryPath & "\Ficheros\" & "Ofertas.txt")
                Do Until fich.EndOfStream
                    Dim datos() As String
                    Dim Linea As String
                    Linea = fich.ReadLine
                    datos = Linea.Split("*")
                    _Ofertas.Add(New Oferta(datos(0), datos(1), datos(2), datos(3), datos(4)))
                Loop
            Catch ex As Exception
                _Ofertas.Clear()
            Finally
                fich.Close()


            End Try
        Else
            Grabar()

        End If
    End Sub
    Public Function Añadir(ByVal oferta As Oferta) As String
        If oferta.Nombre = "" Then
            Return "Error, no tiene nombre"
        End If
        If oferta.Producto = "" Then
            Return "Error, no tiene producto"
        End If
        If oferta.Producto = "Error" Then
            Return "Error, no existe ese producto"
        End If
        _Ofertas.Add(oferta)
        grabar()
        Return ""
    End Function
    Public Function Eliminar(ByVal oferta As Oferta) As String
        If oferta.Nombre = "" Then
            Return "No se puede borrar"
        End If
        For i As Integer = 0 To _Ofertas.Count - 1
            If _Ofertas(i).Equals(oferta) Then
                _Ofertas.RemoveAt(i)
                grabar()
                Return ""
            End If
        Next
        Return "No existe esa oferta"
    End Function
    Public Function Modificar(ByVal ofertaAntigua As Oferta, ByVal ofertaNueva As Oferta) As String
        If ofertaNueva.Nombre = "" Then
            Return "Error, no tiene nombre"
        End If
        If ofertaNueva.Producto Is Nothing Then
            Return "Error, no tiene producto"
        End If
        If ofertaNueva.Producto = "Error" Then
            Return "Error, no existe ese producto"
        End If
        For i As Integer = 0 To _Ofertas.Count - 1
            If _Ofertas(i).Equals(ofertaAntigua) Then
                _Ofertas(i) = ofertaNueva
                grabar()
                Return ""
            End If
        Next
        Return "No se ha podido modificar"
    End Function
    Private Function Grabar() As String
        Dim fichero As StreamWriter
        Try
            File.Delete(My.Application.Info.DirectoryPath & "\Ficheros\" & "Ofertas.txt")
            fichero = New StreamWriter(My.Application.Info.DirectoryPath & "\Ficheros\" & "Ofertas.txt")
            For i As Integer = 0 To _Ofertas.Count - 1
                fichero.WriteLine(_Ofertas(i).Producto & "*" & _Ofertas(i).Nombre & "*" & _Ofertas(i).Precio & "*" & _Ofertas(i).Cantidad & "*" & _Ofertas(i).Fecha)
            Next
        Catch ex As Exception
            fichero.Close()
            Return ex.Message
        End Try
        fichero.Close()
        Return ""
    End Function
End Class
